home *** CD-ROM | disk | FTP | other *** search
/ CSi Master: Pro Tools 6 / CSi Master: Pro Tools 6.iso / mac / QuickTime Installer-0SX / QuickTime.pkg / Contents / Resources / VolumeCheck < prev   
Encoding:
Text File  |  2003-07-07  |  2.1 KB  |  122 lines

  1. #!/usr/bin/perl
  2.  
  3. my $SYSVERS = "$ARGV[0]"."/System/Library/CoreServices/SystemVersion.plist";
  4.  
  5. my $EXIT_VALUE = 0;
  6.  
  7.  
  8.  
  9. DO_CHECKS: 
  10. {
  11.  
  12.     #
  13.     # Target volume must contain a X system.
  14.     #
  15.     if(! -e $SYSVERS ) 
  16.     {
  17.         $EXIT_VALUE = (( 1 << 5 ) | 16);
  18.         last;
  19.     }
  20.     
  21.     
  22.     #
  23.     # Don't install if target system is less than 10.2.3
  24.     #
  25.        if(CheckVersion( "$SYSVERS", "10.2.3", "ProductVersion", "<" ))
  26.     {
  27.         $EXIT_VALUE = (( 1 << 5 ) | 17);
  28.         last;
  29.     }
  30.     
  31.     #
  32.     # Run the installinfo "preinstall" tool.
  33.     #
  34.     my $packagepath = "";
  35.     
  36.     $packagepath = $ENV{'PACKAGE_PATH'};
  37.  
  38.     
  39.     if ("$packagepath" ne "") {
  40.         my $installinfotool = "$packagepath"."/Contents/Resources/installinfo";
  41.         
  42.         my $cmd = "\"$installinfotool\" -preinstall -volume \"$ARGV[0]\"";
  43.         system("$cmd");
  44.     }
  45.     
  46. }
  47.  
  48. exit($EXIT_VALUE);
  49.  
  50.  
  51. ##################
  52.  
  53. sub CheckVersion
  54. {
  55.     my $path            = $_[0];
  56.     my $version         = $_[1];
  57.     my $keyName         = $_[2];
  58.     my $operator        = $_[3];
  59.  
  60.     if (! -e $path) {
  61.         return 0;
  62.     }
  63.  
  64.     if (!$operator) {
  65.         $operator = "==";
  66.     }
  67.  
  68.     my $oldSeperator = $/;
  69.     $/ = \0;
  70.  
  71.     open( PLIST, "$path") || do {
  72.         return 0;
  73.     };
  74.  
  75.     $plistData = <PLIST>;
  76.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  77.  
  78.     @items = split(/<key>/, $plistData);
  79.  
  80.     shift @items;
  81.     foreach $item (@items) {
  82.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  83.         $versiondata{ $1 } = $2;
  84.     }
  85.  
  86.     close(PLIST);
  87.  
  88.     $/ = $oldSeperator;
  89.  
  90.     @theVersionArray = split(/\./, $versiondata{$keyName});
  91.     for ($i = 0; $i < 3; $i++) {
  92.         if(!$theVersionArray[$i]) {
  93.             $theVersionArray[$i] = '0';
  94.         }
  95.     }
  96.  
  97.     @versionArray = split(/\./, $version);
  98.     
  99.     my $actualVersion;
  100.  
  101.     for ($i = 0; $i < 3; $i++) {
  102.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  103.  
  104.             $actualVersion = $theVersionArray[$i];
  105.             $version = $versionArray[$i];
  106.  
  107.             last;
  108.         }
  109.     }
  110.  
  111.     my $expression = '$actualVersion ' . $operator . ' $version';
  112.     if( eval ($expression) )
  113.     {
  114.         return 1;
  115.     }
  116.     else
  117.     {
  118.         return 0;
  119.     }
  120.  
  121. }
  122.